kohonen_layer_parameters_utilities.f90 Source File


This file depends on

sourcefile~~kohonen_layer_parameters_utilities.f90~~EfferentGraph sourcefile~kohonen_layer_parameters_utilities.f90 kohonen_layer_parameters_utilities.f90 sourcefile~constants_utilities.f90 constants_utilities.f90 sourcefile~kohonen_layer_parameters_utilities.f90->sourcefile~constants_utilities.f90 sourcefile~precision_utilities.f90 precision_utilities.f90 sourcefile~kohonen_layer_parameters_utilities.f90->sourcefile~precision_utilities.f90 sourcefile~constants_utilities.f90->sourcefile~precision_utilities.f90

Files dependent on this one

sourcefile~~kohonen_layer_parameters_utilities.f90~~AfferentGraph sourcefile~kohonen_layer_parameters_utilities.f90 kohonen_layer_parameters_utilities.f90 sourcefile~kohonen_layer_utilities.f90 kohonen_layer_utilities.f90 sourcefile~kohonen_layer_utilities.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~kohonen_map_base_utilities.f90 kohonen_map_base_utilities.f90 sourcefile~kohonen_layer_utilities.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~kohonen_map_base_utilities.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~multilayer_self_organizing_map_utilities.f90 multilayer_self_organizing_map_utilities.f90 sourcefile~multilayer_self_organizing_map_utilities.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~multilayer_self_organizing_map_utilities.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~self_organizing_map_utilities.f90 self_organizing_map_utilities.f90 sourcefile~self_organizing_map_utilities.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~self_organizing_map_utilities.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~som_predict_variables.f90 som_predict_variables.f90 sourcefile~som_predict_variables.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~som_predict_variables.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~som_predict_variables.f90->sourcefile~self_organizing_map_utilities.f90 sourcefile~som_train_variables.f90 som_train_variables.f90 sourcefile~som_train_variables.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~som_train_variables.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~som_train_variables.f90->sourcefile~self_organizing_map_utilities.f90 sourcefile~two_level_self_organizing_map_utilities.f90 two_level_self_organizing_map_utilities.f90 sourcefile~two_level_self_organizing_map_utilities.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~two_level_self_organizing_map_utilities.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~two_level_som_estimate_variables.f90 two_level_som_estimate_variables.f90 sourcefile~two_level_som_estimate_variables.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~two_level_som_estimate_variables.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~two_level_som_estimate_variables.f90->sourcefile~two_level_self_organizing_map_utilities.f90 sourcefile~two_level_som_train_variables.f90 two_level_som_train_variables.f90 sourcefile~two_level_som_train_variables.f90->sourcefile~kohonen_layer_parameters_utilities.f90 sourcefile~two_level_som_train_variables.f90->sourcefile~kohonen_map_base_utilities.f90 sourcefile~two_level_som_train_variables.f90->sourcefile~two_level_self_organizing_map_utilities.f90

Source Code

module kohonen_layer_parameters_utilities
!
use error_handling, only: error_t,error_stop;
use precision_utilities, only: wp;
use constants_utilities, only: NUMCHAR;
use tomlf, only: toml_table;
implicit none
!
private
!
type kohonen_layer_parameters
  integer :: train_option !
  integer :: number_nodes_nx,number_nodes_ny,number_nodes_nz,number_patterns
  integer :: number_variables1,number_variables2,number_variables
  integer,allocatable :: column_var(:)
  integer :: number_epochs,debug_level !number_clusters,
  integer,dimension(1) :: random_seed_
  real(kind=wp) :: learning_rate
  character(len=NUMCHAR) :: node_type !rectangular, hexagonal
  character(len=NUMCHAR) :: debug_file,pattern_file,output_file
  character(len=NUMCHAR) :: distance_type !euclidean, manhattan, correlation, correlation2
  character(len=NUMCHAR) :: neighborhood_type !gaussian,bubble
  character(len=NUMCHAR) :: som_type !normal_som,visom,robust_som
  character(len=NUMCHAR) :: m_estimator !name of the M-estimator to be used
  logical :: toroidal_grid
  ! UNITS FOR TRAINING OUTPUT
  integer :: idbg,iout,iindex,iprot,ihit,idist,iumat,ipar,isam,iclus,icen,iclus1,idisto
  ! UNITS FOR ESTIMATION OUTPUT
  integer :: iout1,imeas 
  logical :: view_flag
  ! FLAG FOR DEBUGGING REALIZATION
  integer :: ireal
!
  contains
    procedure,public :: print => print_parameters
    procedure,public :: read_parameters
    procedure,public :: read_parameters_toml
    !generic,public :: read => read_parameters, read_parameters_toml
end type kohonen_layer_parameters

public :: kohonen_layer_parameters
!
 contains
!============================================================================== 
 subroutine print_parameters(parameters,layer_ind,unit_)
!============================================================================== 
   class(kohonen_layer_parameters) :: parameters
   integer,intent(inout) :: layer_ind
   integer,intent(inout),optional :: unit_
!
   integer :: unit1,j,toroidal
   character(len=NUMCHAR) :: current_line
!
   if(.not. present(unit_)) then 
      unit1=6;
   else
      unit1=unit_;
   endif
   write(unit1,'(A)') adjustl('Kohonen Map Parameters');
   write(unit1,'(A)') adjustl('SOM_TRAIN_PARAMETERS')
   write(current_line,'(I5)') parameters%train_option
   write(unit1,'(A40,A)') adjustl(current_line),'!Train option';
   if(layer_ind == 1) then
     write(unit1,'(A40,A)') adjustl(parameters%pattern_file),'!Pattern file';
   endif
   write(current_line,'(I5)') parameters%number_patterns   
   write(unit1,'(A40,A)') adjustl(current_line),'!Number Patterns';
   write(current_line,'(2I5)') parameters%number_variables1,parameters%number_variables2
   write(unit1,'(A40,A)') adjustl(current_line),'!Number Variables1,Number Variables2';
   if(parameters%number_variables .le. 10) then
     write(current_line,'(10I4)') (parameters%column_var(j),j=1,parameters%number_variables)
   else
     write(current_line,'(4I4)') -1,-1,-1,-1
   endif
   write(unit1,'(A40,A)') adjustl(current_line),'!Columns'
   if(layer_ind == 1) then
     write(unit1,'(A40,A)') adjustl(parameters%som_type),'!SOM type'
   endif
   write(current_line,'(3I5)') parameters%number_nodes_nx,&
                              parameters%number_nodes_ny,&
                              parameters%number_nodes_nz
   write(unit1,'(A40,A)') adjustl(current_line),'!Number nodes x, Number nodes y, Number nodes z'
   write(current_line,'(I6)') parameters%number_epochs
   write(unit1,'(A40,A)') adjustl(current_line),'!Number epochs';
   write(current_line,'(f10.5)') parameters%learning_rate
   write(unit1,'(A40,A)') adjustl(current_line),'!Learning rate';
   write(current_line,'(I10)') parameters%random_seed_
   write(unit1,'(A40,A)') adjustl(current_line),'!Random seed';
   write(unit1,'(A40,A)') adjustl(parameters%distance_type),'!Distance type';
   write(unit1,'(A40,A)') adjustl(parameters%node_type),'!Node type';
   write(unit1,'(A40,A)') adjustl(parameters%neighborhood_type),'!Neigh type';
   write(current_line,'(I5)') parameters%debug_level;
   write(unit1,'(A40,A)') adjustl(current_line),'!Debug level';
   if(layer_ind == 1) then
     write(unit1,'(A40,A)') adjustl(parameters%debug_file),'!Debug file';
   endif
   if(layer_ind == 1) then
     write(unit1,'(A40,A)') adjustl(parameters%output_file),'!Output file';
   endif
   if(parameters%toroidal_grid) then
     toroidal=1;
   else 
     toroidal=0;
   endif
   write(current_line,'(I2)') toroidal
   write(unit1,'(A40,A)') adjustl(current_line),'!Toroidal grid'
!
   return
!
 end subroutine print_parameters
!============================================================================== 
 subroutine read_parameters(parameters,unit_)
!============================================================================== 
   class(kohonen_layer_parameters) :: parameters
   integer,intent(inout),optional :: unit_
!
   integer :: unit1
!
   if(.not. present(unit_)) then 
      unit1=6;
   else
      unit1=unit_;
   endif
   read(unit1,*) !'Kohonen Map Parameters'
   read(unit1,'(A40)') parameters%pattern_file !,'!Pattern file';
   read(unit1,'(I40)') parameters%number_patterns!,'!Number Patterns';
   read(unit1,'(I40)') parameters%number_variables1!,'!Number Variables1';
   read(unit1,'(I40)') parameters%number_variables2!,'!Number Variables2';
   parameters%number_variables=parameters%number_variables1*&
                               parameters%number_variables2
!    read(unit1,'(A40)') parameters%output_file!,'!Output file';
!    read(unit1,'(A40)') parameters%debug_file!,'!Debug file';
!    read(unit1,'(I40)') parameters%debug_level!,'!Debug level'; 
   read(unit1,'(I40)') parameters%number_nodes_nx!,'!Number nodes x';
   read(unit1,'(I40)') parameters%number_nodes_ny!,'!Number nodes y';
   read(unit1,'(I40)') parameters%number_nodes_nz!,'!Number nodes z';
   read(unit1,'(I40)') parameters%number_epochs!,'!Number epochs';
   read(unit1,*) parameters%learning_rate!,'!Learning rate';
   read(unit1,'(I40)') parameters%random_seed_!,'!Random seed';
   read(unit1,'(A40)') parameters%distance_type!,'!Distance type';
   read(unit1,'(A40)') parameters%node_type!,'!Node type';
   read(unit1,'(A40)') parameters%neighborhood_type!,'!Neigh type';
   read(unit1,'(I40)') parameters%debug_level!,'!Debug level';
   read(unit1,'(A40)') parameters%debug_file!,'!Debug file';
   read(unit1,'(A40)') parameters%output_file!,'!Output file';
!   
 end subroutine read_parameters
!========================================================================================
    subroutine read_parameters_toml(parameters,unit_)
!========================================================================================
      class(kohonen_layer_parameters) :: parameters
      integer,intent(inout),optional :: unit_
! Create a subroutine to read a toml file 
    end subroutine read_parameters_toml
!
end module kohonen_layer_parameters_utilities